#pragma once

#include <stack>
#include <string>

using namespace std;

#include "cvtclass_common.hpp"

class CVTPkt_Parser
{
private:
	std::stack<Object> m_ctx;
	Object m_fields;
public:
	CVTPkt_Parser() = default;
	~CVTPkt_Parser() = default; 
	
	int CVTPkt_parser(const string& pktfile);
    int CVTPkt_parser(pugi::xml_node& xmlroot);
    Object& CVTPkt_getFields();
private:    
	int CVTPkt_parser_node(pugi::xml_node& pktNode);
    int CVTPkt_parserStruct(pugi::xml_node& input);
    int CVTPkt_parserLoop(pugi::xml_node& input);
    int CVTPkt_parserInclude(pugi::xml_node& input);
    int CVTPkt_parserField(pugi::xml_node& input);
    int CVTPkt_parserDefault(pugi::xml_node& input);
};